package com.asurplus.common.bug;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.util.ArrayList;
import java.util.List;

/**
 * 豆瓣电影TOP250爬虫工具类
 */
public class DoubanBugUtils {

    /**
     * 爬取地址
     */
    private static String url = "https://movie.douban.com/top250?start=";

    /**
     * 爬取数据
     */
    public static List<DoubanVO> getDoubanTopMovie() {
        Document document;
        List<DoubanVO> list = new ArrayList<>();
        DoubanVO doubanVO;
        Elements elements;
        // 分页爬取
        for (int i = 0; i < 2; i++) {
            try {
                // 得到文档对象
                document = Jsoup.connect(url + (i * 25)).get();
                // 得到dom对象
                elements = document.getElementsByClass("item");
                // 获取电影信息
                for (Element item : elements) {
                    doubanVO = new DoubanVO();
                    // 排名
                    doubanVO.setTop(item.getElementsByTag("em").get(0).text());
                    // 封面
                    doubanVO.setCover(item.getElementsByTag("img").get(0).attr("src"));
                    // 名称
                    doubanVO.setTitle(item.getElementsByClass("hd").get(0).getElementsByTag("span").get(0).text());
                    String bd = item.getElementsByClass("bd").get(0).getElementsByTag("p").get(0).html();
                    // 演员
                    doubanVO.setActor(bd.split("<br>")[0].replaceAll("&nbsp;", " "));
                    String info = bd.split("<br>")[1].replaceAll("&nbsp;", " ");
                    String[] infos = info.split("/");
                    // 年份
                    doubanVO.setYear(infos[0].trim());
                    // 国家
                    doubanVO.setCountry(infos[1].trim());
                    // 类型
                    doubanVO.setType(infos[2].trim());
                    // 评分
                    doubanVO.setScore(item.getElementsByClass("rating_num").get(0).text());
                    if (item.getElementsByClass("quote").size() > 0) {
                        // 简介
                        doubanVO.setIntrod(item.getElementsByClass("quote").get(0).text());
                    }
                    list.add(doubanVO);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return list;
    }

    public static void main(String[] args) {
        List<DoubanVO> list = getDoubanTopMovie();
        list.forEach(i -> {
            System.out.println(i);
        });
    }
}
